package com.sunshine.mapper;

import com.sunshine.domain.user;
import com.sunshine.domain.userExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface userMapper {
    /**
     * 根据条件统计用户数量
     *
     * @param example 查询条件
     * @return 符合条件的用户数量
     */
    long countByExample(userExample example);

    /**
     * 根据条件删除用户
     *
     * @param example 删除条件
     * @return 删除的用户数量
     */
    int deleteByExample(userExample example);

    /**
     * 根据主键删除用户
     *
     * @param id 用户ID
     * @return 删除的用户数量
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 插入用户记录
     *
     * @param record 用户对象
     * @return 插入的记录数
     */
    int insert(user record);

    /**
     * 选择性插入用户记录（只插入非空字段）
     *
     * @param record 用户对象
     * @return 插入的记录数
     */
    int insertSelective(user record);

    /**
     * 根据条件查询用户列表
     *
     * @param example 查询条件
     * @return 用户列表
     */
    List<user> selectByExample(userExample example);

    /**
     * 根据主键查询用户
     *
     * @param id 用户ID
     * @return 用户对象
     */
    user selectByPrimaryKey(Integer id);

    /**
     * 根据条件选择性更新用户信息
     *
     * @param record  用户对象（包含要更新的字段）
     * @param example 更新条件
     * @return 更新的记录数
     */
    int updateByExampleSelective(@Param("record") user record, @Param("example") userExample example);

    /**
     * 根据条件更新用户信息
     *
     * @param record  用户对象（包含要更新的字段）
     * @param example 更新条件
     * @return 更新的记录数
     */
    int updateByExample(@Param("record") user record, @Param("example") userExample example);

    /**
     * 根据主键选择性更新用户信息
     *
     * @param record 用户对象（包含要更新的字段）
     * @return 更新的记录数
     */
    int updateByPrimaryKeySelective(user record);

    /**
     * 根据主键更新用户信息
     *
     * @param record 用户对象
     * @return 更新的记录数
     */
    int updateByPrimaryKey(user record);
}